#include"SListNode.h"

//void InitList(SListNode** phead) {
//	*phead = NULL;
//}
//void SLTPrint(SListNode* phead) {
//	SListNode* cur = phead;
//	while (cur) {
//		printf("%d->", cur->data);
//		cur = cur->next;
//	}
//	printf("NULL\n");
//}
//
//SListNode* createListNode(SLNDatatype x) {
//	SListNode* newNode = (SListNode*)malloc(sizeof(SListNode));
//	if (newNode == NULL) {
//		perror("malloc false");
//		return NULL;
//	}
//	newNode->data = x;
//	newNode->next = NULL;
//	return newNode;
//}
//
//void pushrear(SListNode** pphead, SLNDatatype x) {
//	assert(pphead);
//	SListNode* newNode = createListNode(x);
//	if (*pphead == NULL) {
//		*pphead = newNode;
//	}
//	else {
//		SListNode* p = *pphead;
//		while (p->next) {
//			p = p->next;
//		}
//		p->next = newNode;
//	}
//}
//
//void pushfront(SListNode** pphead, SLNDatatype x) {
//	assert(pphead);
//	SListNode* newNode = createListNode(x);
//	newNode->next = *pphead;
//	*pphead = newNode;
//}
//
//void poprear(SListNode** pphead) {
//	assert(pphead);
//	assert(*pphead);
//	if ((*pphead)->next = NULL) {
//		free(*pphead);
//		*pphead = NULL;
//	}
//	else {
//		SListNode* per = NULL;
//		SListNode* curr = *pphead;
//		while (curr->next) {
//			per = curr;
//			curr = curr->next;
//		}
//		per->next = NULL;
//		free(curr);
//		curr = NULL;
//	}
//}
//
//void popfront(SListNode** pphead) {
//	assert(pphead);
//	assert(*pphead);
//	SListNode* newhead = (*pphead)->next;
//	free(*pphead);
//	*pphead = newhead;
//}
//
//SListNode* SLTFind(SListNode* phead, SLNDatatype x) {
//	SListNode* cur = phead;
//	while (cur) {
//		if (cur->data == x) {
//			return cur;
//		}
//		cur = cur->next;
//	}
//	return NULL;
//}
//
//void SLTFInsert(SListNode** pphead, SListNode* pos, SLNDatatype x) {
//	assert(pphead);
//	assert(*pphead);
//	assert(pos);
//	if (pos == (*pphead)) {
//		pushfront(pphead, x);
//	}
//	else {
//		SListNode* newNode = createListNode(x);
//		SListNode* per = *pphead;
//		while (per->next != pos) {
//			per = per->next;
//		}
//		newNode->next = pos;
//		per->next = newNode;
//	}
//}
//
//void SLTEarse(SListNode** pphead, SListNode* pos) {
//	assert(pphead);
//	assert(pos);
//	if (*pphead == pos) {
//		popfront(pphead);
//	}
//	else {
//		SListNode* per = *pphead;
//		while (per->next != pos) {
//			per = per->next;
//		}
//		per->next = pos->next;
//		free(pos);
//	}
//}
//
//void SLTRInsert(SListNode** pphead, SListNode* pos, SLNDatatype x) {
//	assert(pphead);
//	assert(pos);
//	SListNode* newNode = createListNode(x);
//	newNode->next = pos->next;
//	pos->next = newNode;
//}
//
//void SLTREarse(SListNode** pphead, SListNode* pos) {
//	assert(pphead);
//	assert(pos);
//	assert(pos->next);
//	SListNode* per = pos->next;
//	pos->next = per->next;
//	free(per);
//	per = NULL;
//}
//
//void SLTDestroy(SListNode** pphead) {
//	assert(pphead);
//	SListNode* cur = *pphead;
//	SListNode* tmp;
//	while (cur) {
//		tmp = cur->next;
//		free(cur);
//		cur = tmp;
//	}
//	*pphead = NULL;
//}